package com.geek.novel.common

import android.os.Environment
import android.util.Log
import com.geek.novel.utils.CommUtil


/**
 * 常量
 * Created by  on 2022/05/20.
 */
object Constant {

    /**数据库版本*/
    const val REALM_DB_VERSION_CODE = 4L

    /**响应成功*/
    const val RESPONSE_CODE_SUCCESS = 1
    /**响应失败*/
    const val RESPONSE_CODE_ERROR = 0

    /**内部版本号，作为升级版本判断*/
    val versionCode: Int
        get() {
            val packageInfo = CommUtil.getVersion()
            if(packageInfo != null){
                return packageInfo.versionCode
            }
            return 1
        }
    /**版本号，显示在闪屏界面，关于我们界面，升级界面*/
    val versionName: String
        get() {
            val packageInfo = CommUtil.getVersion()
            if(packageInfo != null){
                return packageInfo.versionName
            }
            return "v1.0.0"
        }
    val appVersion: String
        get() {
            return versionCode.toString()
        }

    const val isPrintLog = true             //关闭后表示不会打印所有log信息
    const val printLogLevel = Log.DEBUG     //打印日志的级别
    const val isSaveLog = true              // 是否把保存日志到SD卡中
    const val saveLogLevel = Log.INFO       // 保存日志到SD卡中的日志的级别

    /**服务器地址*/
//    const val HTTP_SERVICE_IP = "http://192.168.8.148/"//本地测试地址1
//    const val HTTP_SERVICE_IP = "http://192.168.1.101/"//本地测试地址2
//	const val HTTP_SERVICE_IP = "http://110.40.242.114/"//爬虫环境地址1
    const val HTTP_SERVICE_IP = "http://106.55.154.216/"//现场正式地址

    const val SERVICE_NOVEL = "novel-service/api"       //小说服务
    const val SERVICE_FILE = "file-service/api"         //文件服务

    const val CLIENT_ID = "6031245625594737"

    const val HTTP_IMAGE_URL = "$HTTP_SERVICE_IP$SERVICE_FILE/file/image?id="
	
	/**裁剪图片的临时文件名称*/
	const val CROPPED_IMAGE_NAME = "HydraCropImage"

    /**主题-夜间模式*/
    const val Theme_Night = "night"

    private val SDCardPath: String
        get(){
            return Environment.getExternalStorageDirectory().absolutePath
        }
    private const val NovelPath = "com/hydra/novel"
    //日志路径
    val LOG_PATH = "$SDCardPath/$NovelPath/logs" // SD卡中的根目录下的目录
    /**用户图片位置*/
    val ImagesPath = "$SDCardPath/$NovelPath/images"
    /**更新包下载位置*/
    val ApkPath = "$SDCardPath/$NovelPath/apk"
    /**字体包下载位置*/
    val TypefacePath = "$SDCardPath/$NovelPath/typeface"

    
    var SP_DEVICE_ID = "device_id"
    var SP_USERINFO_ACCOUNT = "account"
    var SP_USERINFO_PASSWORD = "password"
    var SP_USERINFO_MEMORY_PWD = "memory_pwd"
    var SP_USERINFO = "userinfo"
    var SP_VERSION = "version"

    var SP_IS_LOGIN = "is_login"
    var SP_TOKEN = "SP_TOKEN"
    var SP_refresh_key = "SP_refresh_key"//新刷新令牌
    var SP_exp_time = "SP_exp_time"//商户令牌过期时间



    /**干掉所有script标签*/
    const val REGEX_MATCH_SCRIPT = "<script.*?>.*?</script>:"
    /**干掉所有标签*/
    const val REGEX_MATCH_ALL_TAG = "</?\\w+?.*?/?>:"


    /**角色-超级管理员*/
    const val ROLE_SU_ADMIN = "ROLE_SU_ADMIN"
    /**角色-管理员*/
    const val ROLE_ADMIN = "ROLE_ADMIN"
    /**角色-用户*/
    const val ROLE_USER = "ROLE_USER"
    /**角色-客户端用户*/
    const val ROLE_APP_USER = "ROLE_APP_USER"
	
	/**
	 * 爬取下来是分页的，所以保存到数据库需要用个分隔符隔开
	 */
	const val BUS_SECTION_PAGE_SEPARATE = "<hydra_spe_page/>"

    /**置顶按钮的key*/
    const val KEY_MENUITEM_TOP = "top"
    /**删除按钮的key*/
    const val KEY_MENUITEM_DELETE = "delete"

    /**Http请求对象类型-JSON类型*/
    const val HTTP_RESULT_TYPE_JSON = 1
    /**Http请求对象类型-列表类型*/
    const val HTTP_RESULT_TYPE_LIST = 2
    /**Http请求对象类型-图片类型*/
    const val HTTP_RESULT_TYPE_IMAGE = 3

    /**Http请求-登录接口*/
    const val HTTP_KEY_LOGIN = 1// 登录
    /**Http请求-注册接口*/
    const val HTTP_KEY_REGIST = 2// 注册
    /**Http请求-获取用户信息接口*/
    const val HTTP_KEY_GET_USERINFO = 3// 获取用户信息
    /**Http请求-更新用户信息接口*/
    const val HTTP_KEY_UPDATE_USERINFO = 4// 更新用户信息
    /**Http请求-上传文件接口*/
    const val HTTP_KEY_UPLOAD_FILE = 5// 上传文件
    /**Http请求-下载文件接口*/
    const val HTTP_KEY_DOWNLOAD_FILE = 6// 下载文件
    /**Http请求-下载文件接口*/
    const val HTTP_KEY_DOWNLOAD_USER_IMAGE = 7// 下载文件
    /**Http请求-检查更新接口*/
    const val HTTP_KEY_APP_CHECK_UPDATE = 8// 检查更新
    /**Http请求-获取字体列表*/
    const val HTTP_KEY_APP_GET_TYPEFACE_LIST = 9
    /**Http请求-获取首页推荐小说*/
    const val HTTP_KEY_APP_GET_RECOMMEND_BOOK_LIST = 10
    /**Http请求-获取书籍详情*/
    const val HTTP_KEY_APP_GET_BOOK_DETAIL = 11
    /**Http请求-根据作者id获取作者的所有书籍*/
    const val HTTP_KEY_APP_GET_AUTHOR_BOOKS = 12
    /**Http请求-根据关键字搜索书籍*/
    const val HTTP_KEY_APP_BOOK_SEARCH = 13
    /**Http请求-获取所有爬虫源*/
    const val HTTP_KEY_APP_GET_CRAWLER_SOURCE_LIST = 14
    /**Http请求-获取小说分类*/
    const val HTTP_KEY_APP_GET_BOOK_CATEGORIES = 15
    /**Http请求-根据分类信息获取小说列表*/
    const val HTTP_KEY_APP_GET_BOOK_BY_CATEGORY = 16
	/**Http请求-获取爬虫源列表*/
	const val HTTP_KEY_APP_GET_BOOK_CRAWLER_LIST = 17
	/**Http请求-用户加收藏*/
	const val HTTP_KEY_APP_USER_COLLECT_ADD = 18
	/**Http请求-用户删除收藏*/
	const val HTTP_KEY_APP_USER_COLLECT_REMOVE = 19
	/**Http请求-获取用户收藏列表*/
	const val HTTP_KEY_APP_USER_COLLECT_QUERY = 20
    /**Http请求-修改密码接口*/
    const val HTTP_KEY_MODIFY_PASSWORD = 21
    /**Http请求-发送忘记密码的验证码*/
    const val HTTP_KEY_FORGET_PASSWORD_VALIDATE_CODE = 22
    /**Http请求-忘记密码接口*/
    const val HTTP_KEY_FORGET_PASSWORD = 23
    /**Http请求-书籍点击数+1*/
    const val HTTP_KEY_APP_USER_COLLECT_ADD_VISIT_COUNT = 24
    /**Http请求-书籍阅读数+1*/
    const val HTTP_KEY_APP_USER_COLLECT_ADD_READ_COUNT = 25
    /**Http请求-书籍阅读数-1*/
    const val HTTP_KEY_APP_USER_COLLECT_MINUS_READ_COUNT = 26
    /**Http请求-热搜词*/
    const val HTTP_KEY_APP_QUERY_BOOK_SEARCH_HOT_KEY = 27

	/**头像上传的缩放比例*/
	var IMAGE_HEADER_W_H_LIMIT = 150

	/**阅读页面字体大小的常量*/
	val stepTextSize = CommUtil.dip2px(1F)
	var minTextSize = 0f
	var maxTextSize = 0f
	/**阅读页面字体行间距的常量*/
	val stepTextLineSize = CommUtil.dip2px(1F)
	var minTextLineSize = 0f
	var maxTextLineSize = 0f

    /**自动翻页时间大小的常量*/
	var minAutoTurnPageTime = 10
	var maxAutoTurnPageTime = 50

    /**点击阅读页面的中间区域，弹出底部菜单*/
    const val handler_event_show_bottom_dialog = 101

    /**选择图片之后的回调*/
    const val handler_event_selected_image = 201
    /**完成图片上传之后的回调*/
    const val handler_event_upload_file_finish = 202
    /**完成章节索引列表的加载的回调*/
    const val handler_event_load_book_index = 301
	
	/**发起请求加载章节数据*/
    const val handler_event_load_book_section = 302
    /**正在加载的章节页面数据*/
    const val handler_event_load_book_section_page = 303

    /**发起请求加载章节目录数据-出错*/
    const val handler_event_load_book_index_error = 304
    /**发起请求加载章节数据-出错*/
    const val handler_event_load_book_section_error = 305

	/**显示章节菜单的弹框*/
	const val handler_event_open_section_index_dialog = 401

	/**更新我的书架页面的书籍列表*/
	const val handler_event_my_book_update_list = 501

    /**下载书籍列表-刷新爬取的信息*/
    const val handler_event_book_download_update_message = 10001
    /**下载书籍列表-刷新爬取的错误信息*/
    const val handler_event_book_download_update_error_message = 10002
    /**下载书籍列表-缓存书籍完成*/
    const val handler_event_book_download_update_success = 10003

    /**用户登录页面的activity数据回显*/
    const val ACTIVITY_RESULT_USER_LOGIN = 1
    /**用户设置页面的activity数据回显*/
    const val ACTIVITY_RESULT_SETTING = 2
    /**用户信息页面的activity数据回显*/
    const val ACTIVITY_RESULT_USERINFO = 3
    /**用户注册页面的activity数据回显*/
    const val ACTIVITY_RESULT_REGIST = 4
    /**忘记密码页面的activity数据回显*/
    const val ACTIVITY_RESULT_FORGET_PASSWORD = 5
    /**字体选择页面的activity数据回显*/
    const val ACTIVITY_RESULT_TYPEFACE = 6
	/**小说阅读页面的activity数据回显*/
	const val ACTIVITY_RESULT_VIEWER = 7
	/**小说换源页面的activity数据回显*/
	const val ACTIVITY_RESULT_CRAWLER_SOURCE = 8
	/**选择本地小说的activity数据回显*/
	const val  ACTIVITY_RESULT_READ_FILE_SUCCESS = 9
	/**书籍收藏页面的activity数据回显*/
	const val  ACTIVITY_RESULT_COLLECT = 10
    /**书籍设置页面的activity数据回显*/
    const val ACTIVITY_RESULT_BOOK_SETTING = 11


}
